/**
 * 
 */
package ch14;

/**
 * @author sz
 *
 * create time：2012-5-18
 */
public class TestAccess {
	  public static void main(String[] args) {
	    ThreadGroup 
	      x = new ThreadGroup("x"),
	      y = new ThreadGroup(x, "y"),
	      z = new ThreadGroup(y, "z");
	    Thread
	      one = new TestThread1(x, "one"),
	      two = new TestThread2(z, "two");
	  }
	}

	class TestThread1 extends Thread {
	  private int i;
	  TestThread1(ThreadGroup g, String name) {
	    super(g, name);
	  }
	  void f() {
	    i++; // modify this thread
	    System.out.println(getName() + " f()");
	  }
	}

	class TestThread2 extends TestThread1 {
	  TestThread2(ThreadGroup g, String name) {
	    super(g, name);
	    start();
	  }
	  public void run() {
	    ThreadGroup g =
	      getThreadGroup().getParent().getParent();
	    g.list();
	    Thread[] gAll = new Thread[g.activeCount()];
	    g.enumerate(gAll);
	    for(int i = 0; i < gAll.length; i++) {
	      gAll[i].setPriority(Thread.MIN_PRIORITY);
	      ((TestThread1)gAll[i]).f();
	    }
	    g.list();
	  }
	} ///:~